package gui.sejour;

import gui.FenetrePrincipale;
import gui.PanelClient;
import gui.PanelDate;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import Controleur.ControleurSejour;

import main.GestionnaireReservation;
import model.Chambre;
import model.Client;

public class FenetreCreerSejour extends FenetrePrincipale {
	private PanelClient client;
	private PanelDate date;
	private JList lstChambres;
	private JButton btnTerminer, btnAjouter;
	
	public FenetreCreerSejour(ActionListener ctrl){
		setTitle("Cr\u00E9ation de s\u00E9jour sans r\u00E9servation");
		afficher(ctrl);
	}
	
	@Override
	public void afficher(final ActionListener ctrl) {
		getContentPane().setLayout(null);
		setBounds(0, 0, 550, 517);
		init();
		
		client = new PanelClient();
		client.setSize(532, 188);
		client.setLocation(0, 0);
		getContentPane().add(client);
		
		date = new PanelDate(ctrl);
		date.setLocation(0, 189);
		getContentPane().add(date);
		
		JPanel panel = new JPanel();
		panel.setBounds(12, 423, 508, 34);
		getContentPane().add(panel);
		
		btnTerminer = new JButton("Terminer");
		btnTerminer.setEnabled(false);
		btnTerminer.addActionListener(ctrl);
		btnTerminer.setActionCommand(String.valueOf(ControleurSejour.NO_RES_TERMINER));
		panel.add(btnTerminer);
		
		btnAjouter = new JButton("Ajouter");
		btnAjouter.setEnabled(false);
		btnAjouter.addActionListener(ctrl);
		btnAjouter.setActionCommand(String.valueOf(ControleurSejour.NO_RES_AJOUTER));
		panel.add(btnAjouter);
		
		JButton btnAnnuler = new JButton("Annuler");
		btnAnnuler.addActionListener(ctrl);
		btnAnnuler.setActionCommand(String.valueOf(ControleurSejour.ANNULER));
		panel.add(btnAnnuler);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(12, 267, 508, 143);
		getContentPane().add(scrollPane);
		
		lstChambres = new JList();
		lstChambres.addListSelectionListener(new ListSelectionListener() {
			
			@Override
			public void valueChanged(ListSelectionEvent arg0) {
				if (lstChambres.getSelectedIndex() >= 0) {
					ctrl.actionPerformed(new ActionEvent(this, lstChambres.getSelectedIndex(), 
							String.valueOf(ControleurSejour.NO_RES_SELECTIONNER_CHAMBRE)));
				}
			}
		});
		scrollPane.setViewportView(lstChambres);
		
		setVisible(true);
	}
	
	public void activerTerminer(){
		btnTerminer.setEnabled(true);
	}
	public void setAjouterEnabled(boolean etat){
		btnAjouter.setEnabled(etat);
	}
	
	public Date getDateArr(){
		return date.getDateArrivee().getTime();
	}
	
	public Date getDateDep(){
		return date.getDateDepart().getTime();
	}
	
	public Client getClient(){
		return client.getInfoClient();
	}
	
	/**
	 * Remplie lstChambres avec la Collection fournie.
	 * @param chambres
	 */
	public void remplirListeChambres(Collection<Chambre> chambres){
		ArrayList<String> tempList = new ArrayList<String>();
		
		for(Chambre itC:chambres){
			tempList.add(itC.toString());
		}
		
		lstChambres.setListData(tempList.toArray());
	}

	public void modificationSejour(Collection<Chambre> chambres, Date dateArr, Date dateDep){
		client.fillWithClient(GestionnaireReservation.getClient());
		remplirListeChambres(chambres);
		date.insererDates(dateArr, dateDep);
		btnTerminer.setEnabled(true);
	}
}
